/****************************************************************************
* MINILOGO - Minimalistic Logo Interpreter
* Copyright (C) 1999-2008 Willian Mitsuda
* 
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* 
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
* 
*****************************************************************************

*****************************************************************************
* DEFINES.H                                                                 *
*****************************************************************************
* Definicoes globais do projeto                                             *
****************************************************************************/

// Definicoes da janela do shell
#define MINSX 4   // Borda esquerda da janela do shell
#define MINSY 380 // Borda superior da janela do shell
#define MAXSX 635 // Borda direita  da janela do shell
#define MAXSY 475 // Borda inferior da janela do shell
#define CURSW 8   // Largura     do cursor do prompt
#define CURSH 16  // Comprimento do cursor do prompt
#define SCS   14  // Cor do cursor do shell
#define SFG   15  // Cor do texto da janela do shell
#define SBG   1   // Cor do fundo da janela do shell
#define SERR  12  // Cor do texto indicador de erro
#define SCOD  10  // Cor do texto contendo codigo
#define SMSG  14  // Cor do texto contendo mensagem
#define SINF  11  // Cor do texto informativo

// Definicoes da janela grafica
#define MINGX MINSX               // Borda esquerda da janela grafica
#define MINGY 4                   // Borda superior da janela grafica
#define MAXGX MAXSX               // Borda direita  da janela grafica
#define MAXGY (MINSY - 23)        // Borda inferior da janela grafica
#define GX0 ((MAXGX + MINGX) / 2) // Coordenada X da origem
#define GY0 ((MAXGY + MINGY) / 2) // Coordenada Y da origem
#define GXMIN (MINGX - GX0)       // Limite inferior do eixo x
#define GXMAX (MAXGX - GX0)       // Limite superior do eixo x
#define GYMIN (GY0 - MAXGY)       // Limite inferior do eixo y
#define GYMAX (GY0 - MINGY)       // Limite superior do eixo y
#define GXLEN (MAXGX - MINGX + 1) // Comprimento do eixo x
#define GYLEN (MAXGY - MINGY + 1) // Comprimento do eixo y
#define GFG 15                    // Cor do primeiro plano da janela grafica
#define GBG 0                     // Cor do segundo  plano da janela grafica

// Macros utilitarias
#define PI 3.1416
#define RAD(a) (PI * a / 180) // Converte um angulo em radianos

// Tipo de dado que representa o status retornado por um comando
typedef enum
{
  S_ok,   // Comando executado com sucesso
  S_erro, // ERRO!!!
  S_fim   // Sair do MINI-LOGO
} cmd_stat;
